Python实验八(正则表达式的使用) 您所在的位置:网站首页 python 查找字符串中的数字 Python实验八(正则表达式的使用)

Python实验八(正则表达式的使用)

#Python实验八(正则表达式的使用)| 来源: 网络整理| 查看: 265

课件程序居多,简单说明正则表达式

因为这个理解较为困难,如果注解有误,请及时联系我改正,后续会单独做一次正则表达式的解释说明。 一、正则表达式的基本语法 在这里插入图片描述 在这里插入图片描述 二、如果以“\”开头的元字符与转义字符相同,则需要使用“\”,或者使用原始字符串。 在字符串前加上字符r或R之后表示原始字符串,字符串中任意字符都不再进行转义(形如\d如不加r则需用\d区别转义)。原始字符串可以减少用户的输入,主要用于正则表达式和文件路径字符串的情况,但如果字符串以一个斜线“\”结束的话,则需要多写一个斜线,即以“\”结束。 1、写一个正则表达式判断一个字符串是否是ipv4地址。 规则:一个ip地址由4个数字组成,每个数字之间用.连接。每个数字的大小是0-255 例如:255.189.10.37 正确,256.189.89.9 错误。 **注:**该正则表达式的写法可通俗理解成对单个数字字符进行范围截取,分别讨论1、2、3位情况分别讨论进行组合。这里说一个(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5]),其中()代指其中内容为一个整体,单独\d代指[0-9],"|“代指表或者[1-9]\d表示10-99,1\d{2}表示100-199,2[0-4]\d表示200-249,25[0-5]表示250-255,”.“表示转义字符,表示一个字符”."。表达式最开始用到区分转义,减少""的输入,便面混淆。

import re re_str = r'((\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])' result = re.fullmatch(re_str,'255.183.10.37') print(result)

2、使用正则表达式查找文本中最长的数字字符串。 **注:**课件程序,多多理解

import re def longest1(s): t = re.findall('\d+',s) if t: return max(t,key = len) return -1 def longest2(s): t = re.split("[^\d+]",s) if t: return max(t,key = len) return -1 m = "123456789ss123dd456789" print(longest1(m)) print(longest2(m))

3、将一句英语文本中的单词进行倒置,标点不倒置,假设单词之间使用一个或多个空格进行分割。比如I like beijing. 经过函数后变为:beijing. like I。 **注:**课件程序

import re def reverse(s): t = re.split("\s+",s.strip()) t.reverse() return ' '.join(t) print(reverse('I like beijing.')) print(reverse('Simple is better than complex.'))

4、编写程序,使用正则表达式提取另一个Python程序中的所有函数名 **注:**文件选择后续会学习到,着重理解表达式的写法,同样是用r写成原始字符串形式,def 开头,注意python程序函数定义def 后有个空格(\w+)贪心模式,匹配最长的字符串,其中"\w"表示匹配任何字母,数字,以及下划线

import re fileName = input('请输入一个 Python 程序文件名:') pattern = r'def (\w+)' funcNames = [] with open(fileName, encoding='utf8') as fp: for line in fp: result = re.findall(pattern, line) if result: funcNames.extend(result) print(funcNames)

5、假设有一句英文,其中某个单词中有个不在两端的字母误写作大写,编写程序使用正则表达式进行检查和纠正为小写。注意不要影响每个单词两端的字母。 注:"\b"表示字符串的边界,但却不统计边界分隔符,该表达是的意思是统计格式为两边字母相同,中间字符通过lambda表达式转化为小写。特别注意\b…\b统计的是独立的单词,如果内部是某个单词的一部分则不统计。

import re def checkModify(s): return re.sub(r'\b(\w)(\w+)(\w)\b',lambda x:x.group(1)+x.group(2).lower()+x.group(3),s) print(checkModify('aBc ABBC D eeee fFFFfF'))


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有